import jwt
from extensions.redis_ext import redis_store
import secrets

CODE_EXPIRE_TIME = 300  # 验证码有效期，单位为秒

def generate_code(email:str, length:int=4) -> str:
    """生成指定长度的随机数字验证码，并将其存储在redis中
    
    Parameters:
        email: 用户邮箱
        length: 验证码长度，默认为4位
        
    Returns:
        str: 生成的数字验证码
    """
    code = ''.join(secrets.choice('0123456789') for _ in range(length))
    redis_client = redis_store.redis_client
    if redis_client is None:
        raise ValueError("Redis 尚未初始化")
    redis_client.set(email, code, ex=CODE_EXPIRE_TIME)
    return code

def verify_code(email:str, code:str) -> bool:
    """验证验证码是否正确
    
    Parameters:
        email: 用户邮箱
        code: 用户输入的验证码
        
    Returns:
        bool: 验证码是否正确
    """
    redis_client = redis_store.redis_client
    if redis_client is None:
        raise ValueError("Redis 尚未初始化")
    stored_code = redis_client.get(email)
    if stored_code and stored_code == code:
        redis_client.delete(email)
        return True
    return False


